package com.gzdh.dishrecognition.config;

import com.gzdh.dishrecognition.model.ProductCartModel;
import com.gzdh.dishrecognition.model.WeekMenuBakModel;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

public class ProductConst {

    private static ProductConst productConst;

    public static ProductConst getInstance() {

        if (productConst == null) {
            productConst = new ProductConst();
        }

        return productConst;
    }

    public List<ProductCartModel> productCartModelList = new ArrayList<>();

    public String bmcm;


    public List<ProductCartModel> getProductCartModelList() {
        return productCartModelList;
    }

    public void setProductCartModelList(List<ProductCartModel> productCartModelList) {
        this.productCartModelList = productCartModelList;
    }

    public String getBmcm() {
        return bmcm;
    }

    public void setBmcm(String bmcm) {
        this.bmcm = bmcm;
    }


    public void addProductCart(WeekMenuBakModel.Product product) {
        ProductCartModel productCartModel1 = productCartModelList.stream()
                .filter(productCartModel -> productCartModel.getZl().equals(product.getZl()))
                .filter(productCartModel -> productCartModel.getDinner().equals(product.getDinner()))
                .filter(productCartModel -> productCartModel.getBm().equals(product.getBm()))
                .findFirst().orElse(null);
        if (productCartModel1 == null) {
            productCartModel1 = new ProductCartModel();
            productCartModel1.setBm(product.getBm());
            productCartModel1.setName(product.getName());
            productCartModel1.setDinner(product.getDinner());
            productCartModel1.setNumber(1);
            productCartModel1.setZl(product.getZl());
            productCartModel1.setPrice(product.getPrice());
            productCartModelList.add(productCartModel1);
        } else {
            productCartModel1.setNumber(productCartModel1.getNumber() + 1);
        }
    }

    public void addProductCart(ProductCartModel productCartModel2) {
        ProductCartModel productCartModel1 = productCartModelList.stream()
                .filter(productCartModel -> productCartModel.getZl().equals(productCartModel2.getZl()))
                .filter(productCartModel -> productCartModel.getDinner().equals(productCartModel2.getDinner()))
                .filter(productCartModel -> productCartModel.getBm().equals(productCartModel2.getBm()))
                .findFirst().orElse(null);
        if (productCartModel1 == null) {

            productCartModelList.add(productCartModel2);
        } else {
            productCartModel1.setNumber(productCartModel1.getNumber() + 1);
        }
    }

    public String getProductCartPrice() {
        BigDecimal price = new BigDecimal(0);
        for (ProductCartModel goo : this.productCartModelList) {
            price = price.add(new BigDecimal(goo.getPrice()).multiply(new BigDecimal(goo.getNumber())));
        }
        return price.setScale(2).toPlainString();
    }

}
